package POJO;


import java.util.Date;
import java.util.HashSet;
import java.util.Set;
/**
 * Klasa identyfikujaca klienta
 */
public class Osoba{
	private long identyfikator;
	private String haslo;	
	private String imie;
	private String nazwisko;
	private Date dataUrodzenia;
	private String ul;
	private String kodPocztowy;
	private String miejscowosc;
	private Date dataOstatniegoLogowania;
	public Date getDataOstatniegoLogowania() {
		return dataOstatniegoLogowania;
	}

	public void setDataOstatniegoLogowania(Date dataOstatniegoLogowania) {
		this.dataOstatniegoLogowania = dataOstatniegoLogowania;
	}

	private Set<Konto> konta = new HashSet<Konto>();
	private Set<Lokata> lokaty = new HashSet<Lokata>();
	private Set<Kredyt> kredyty = new HashSet<Kredyt>();
	//private Set<HistoriaLogowania> historiaLogowania = new HashSet<HistoriaLogowania>();
	


	public Osoba()
	{
		
	}
	
	public Osoba(long id,String haslo,String imie,String nazwisko,
			Date dataUr,String ulica,String kodPocztowy,String miejscowosc)	{
		
		this.identyfikator = id;
		this.haslo = haslo;
		this.imie = imie;
		this.nazwisko = nazwisko;
		this.dataUrodzenia = dataUr;
		this.ul = ulica;
		this.kodPocztowy = kodPocztowy;
		this.miejscowosc = miejscowosc;
	
	}
	
	public long getIdentyfikator() {
		return identyfikator;
	}
	public void setIdentyfikator(long identyfikator) {
		this.identyfikator = identyfikator;
	}
	public String getImie() {
		return imie;
	}
	public void setImie(String imie) {
		this.imie = imie;
	}
	public Set<Konto> getKonta() {
		
		return konta;
		
	}
	public void setKonta(Set<Konto> konta) {
		this.konta = konta;
	}
	public Set<Lokata> getLokaty() {
		return lokaty;
	}

	public void setLokaty(Set<Lokata> lokaty) {
		this.lokaty = lokaty;
	}

	public Set<Kredyt> getKredyty() {
		return kredyty;
	}

	public void setKredyty(Set<Kredyt> kredyty) {
		this.kredyty = kredyty;
	}
	

	public String getHaslo() {
		return haslo;
	}

	public void setHaslo(String haslo) {
		this.haslo = haslo;
	}

	public String getNazwisko() {
		return nazwisko;
	}

	public void setNazwisko(String nazwisko) {
		this.nazwisko = nazwisko;
	}

	public Date getDataUrodzenia() {
		return dataUrodzenia;
	}

	public void setDataUrodzenia(Date dataUrodzenia) {
		this.dataUrodzenia = dataUrodzenia;
	}

	public String getUl() {
		return ul;
	}

	public void setUl(String ul) {
		this.ul = ul;
	}

	public String getKodPocztowy() {
		return kodPocztowy;
	}

	public void setKodPocztowy(String kodPocztowy) {
		this.kodPocztowy = kodPocztowy;
	}

	public String getMiejscowosc() {
		return miejscowosc;
	}

	public void setMiejscowosc(String miejscowosc) {
		this.miejscowosc = miejscowosc;
	}

	/*public Set<HistoriaLogowania> getHistoriaLogowania() {
		return historiaLogowania;
	}

	public void setHistoriaLogowania(Set<HistoriaLogowania> historiaLogowania) {
		this.historiaLogowania = historiaLogowania;
	}
	
	public void dodajRekordHistLogowania(HistoriaLogowania nowyRekord)
	{
		this.historiaLogowania.add(nowyRekord);
	}
	*/
	public void setPojedynczyRachunek(Object konto, String k_l_kr){    //obiekt konta + k/l/kr  = konto/lokata/kredyt
		if(k_l_kr.equals("k"))
		{
			this.konta.add((Konto) konto);
		
			
		}
		else if(k_l_kr.equals("l"))
		{
			this.lokaty.add((Lokata)konto);
		}
		else if(k_l_kr.equals("kr"))
		{
			this.kredyty.add((Kredyt)konto);
		}
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((dataUrodzenia == null) ? 0 : dataUrodzenia.hashCode());
		result = prime * result + ((haslo == null) ? 0 : haslo.hashCode());
		result = prime * result
				+ (int) (identyfikator ^ (identyfikator >>> 32));
		result = prime * result + ((imie == null) ? 0 : imie.hashCode());
		result = prime * result
				+ ((kodPocztowy == null) ? 0 : kodPocztowy.hashCode());
		result = prime * result
				+ ((miejscowosc == null) ? 0 : miejscowosc.hashCode());
		result = prime * result
				+ ((nazwisko == null) ? 0 : nazwisko.hashCode());
		result = prime * result + ((ul == null) ? 0 : ul.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Osoba other = (Osoba) obj;
		if (dataUrodzenia == null) {
			if (other.dataUrodzenia != null)
				return false;
		} else if (!dataUrodzenia.equals(other.dataUrodzenia))
			return false;
		if (haslo == null) {
			if (other.haslo != null)
				return false;
		} else if (!haslo.equals(other.haslo))
			return false;
		if (identyfikator != other.identyfikator)
			return false;
		if (imie == null) {
			if (other.imie != null)
				return false;
		} else if (!imie.equals(other.imie))
			return false;
		if (kodPocztowy == null) {
			if (other.kodPocztowy != null)
				return false;
		} else if (!kodPocztowy.equals(other.kodPocztowy))
			return false;
		if (miejscowosc == null) {
			if (other.miejscowosc != null)
				return false;
		} else if (!miejscowosc.equals(other.miejscowosc))
			return false;
		if (nazwisko == null) {
			if (other.nazwisko != null)
				return false;
		} else if (!nazwisko.equals(other.nazwisko))
			return false;
		if (ul == null) {
			if (other.ul != null)
				return false;
		} else if (!ul.equals(other.ul))
			return false;
		return true;
	}

	

	
}